﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using DTO;
using BUS;

namespace QuanLyDoiXe
{
    public partial class frmLapHoaDonGiaoHang : Form
    {
        public frmLapHoaDonGiaoHang()
        {
            InitializeComponent();
            DataGridViewTextBoxColumn txtColumn = new DataGridViewTextBoxColumn();
            txtColumn.Name = "STT";
            txtColumn.HeaderText = "STT";
            txtColumn.Width = 50;
            dtgHoaDonGiaoHang.Columns.Add(txtColumn);


            txtColumn = new DataGridViewTextBoxColumn();
            txtColumn.Name = "MaDiaDiem";
            txtColumn.Visible = false;
            dtgHoaDonGiaoHang.Columns.Add(txtColumn);

            txtColumn = new DataGridViewTextBoxColumn();
            txtColumn.Name = "KhachHang";
            txtColumn.HeaderText = "Khách hàng";
            txtColumn.Width = 200;
            txtColumn.ReadOnly = true;
            dtgHoaDonGiaoHang.Columns.Add(txtColumn);

            txtColumn = new DataGridViewTextBoxColumn();
            txtColumn.Name = "DiaChi";
            txtColumn.HeaderText = "Địa chỉ";
            txtColumn.Width = 300;
            txtColumn.ReadOnly = true;
            dtgHoaDonGiaoHang.Columns.Add(txtColumn);

            DataGridViewComboBoxColumn cboColumn = new DataGridViewComboBoxColumn();
            cboColumn.Name = "LoaiHang";
            cboColumn.HeaderText = "Loại hàng";
            cboColumn.Width = 100;
            cboColumn.DataSource = LoaiHangBUS.LayDanhSach();
            cboColumn.DisplayMember = "TenLoaiHang";
            cboColumn.ValueMember = "MaLoaiHang";
            dtgHoaDonGiaoHang.Columns.Add(cboColumn);

            txtColumn = new DataGridViewTextBoxColumn();
            txtColumn.Name = "SoLuong";
            txtColumn.HeaderText = "Số lượng";
            txtColumn.Width = 80;
            dtgHoaDonGiaoHang.Columns.Add(txtColumn);

            cboColumn = new DataGridViewComboBoxColumn();
            cboColumn.Name = "TrangThai";
            cboColumn.HeaderText = "Trạng thái";
            cboColumn.Width = 80;
            cboColumn.DataSource = TrangThaiBUS.LayDanhSach();
            cboColumn.DisplayMember = "TenTrangThai";
            cboColumn.ValueMember = "MaTrangThai";
            dtgHoaDonGiaoHang.Columns.Add(cboColumn);

            cboXeDiGH.DataSource = XeBUS.LayDanhSach();
            cboXeDiGH.SelectedIndex = -1;

            dtDSKhachHang.DataSource = DiaDiemBUS.LayDanhSach();
            foreach (DataGridViewColumn column in dtDSKhachHang.Columns)
            {
                column.Visible = false;
            }
            dtDSKhachHang.Columns["NguoiLienHe"].Visible = true;
            dtDSKhachHang.Columns["NguoiLienHe"].HeaderText = "Khách hàng";
            dtDSKhachHang.Columns["DiaChi"].Visible = true;
            dtDSKhachHang.Columns["DiaChi"].HeaderText = "Địa chỉ";

        }

        private string KiemTra()
        {
            string chuoiLoi = "";
            if (cboXeDiGH.SelectedIndex == -1)
            {
                chuoiLoi += "Bạn chưa chọn xe đi giao hàng\n";
            }
            if (dtgHoaDonGiaoHang.Rows.Count > 1)
            {
                for (int i = 0; i < dtgHoaDonGiaoHang.Rows.Count - 1; i++)
                {
                    if (dtgHoaDonGiaoHang.Rows[i].Cells[1].Value == null)
                    {
                        chuoiLoi += "Bạn chưa chọn khách hàng ở dòng " + (i + 1).ToString() + "\n";
                    }


                    if (dtgHoaDonGiaoHang.Rows[i].Cells[4].Value == null)
                    {
                        chuoiLoi += "Bạn chưa chọn loại hàng ở dòng " + (i + 1).ToString() + "\n";
                    }

                    double temp;
                    Object obj;
                    obj = dtgHoaDonGiaoHang.Rows[i].Cells[5].Value;
                    if (obj == null)
                    {
                        chuoiLoi += "Phải nhập vào số lượng hàng cần giao\n";
                    }
                    else if ((obj != null) && (Double.TryParse(obj.ToString(), out temp) == false))
                    {
                        chuoiLoi += "Số lượng hàng cần giao ở dòng " + (i + 1).ToString() + " phải là số thực\n";
                    }

                    if (dtgHoaDonGiaoHang.Rows[i].Cells[6].Value == null)
                    {
                        chuoiLoi += "Bạn chưa chọn trạng thái giao hàng ở dòng " + (i + 1).ToString() + "\n";
                    }
                }
            }
            else
            {
                chuoiLoi += "Chưa có dữ liệu lập hóa đơn giao hàng\n";
            }

            return chuoiLoi;
        }

        private void btnDongY_Click(object sender, EventArgs e)
        {
            string kt = KiemTra();
            if (kt != "")
            {
                MessageBox.Show(kt);
                return;
            }

            HoaDonGiaoHangDTO hoaDonDto = new HoaDonGiaoHangDTO();
            List<ChiTietHoaDonGiaoHangDTO> lstChiTiet = new List<ChiTietHoaDonGiaoHangDTO>();

            hoaDonDto.NgayGiaoHang = dtpNgayGiaoHang.Value;
            hoaDonDto.BienSoXe = cboXeDiGH.SelectedItem.ToString();
            hoaDonDto.NgayLapHoaDon = dtpNgaylapHD.Value;

            if (dtgHoaDonGiaoHang.Rows.Count > 1)
            {
                for (int i = 0; i < dtgHoaDonGiaoHang.Rows.Count - 1; i++)
                {
                    ChiTietHoaDonGiaoHangDTO chitiet = new ChiTietHoaDonGiaoHangDTO();

                    chitiet.MaChiTietHoaDon = i + 1;

                    if (dtgHoaDonGiaoHang.Rows[i].Cells["MaDiaDiem"].Value != null)
                    {
                        chitiet.MaDiaDiem = Convert.ToInt32(dtgHoaDonGiaoHang.Rows[i].Cells["MaDiaDiem"].Value);
                    }
                    if (dtgHoaDonGiaoHang.Rows[i].Cells[4].Value != null)
                    {
                        chitiet.MaLoaiHang = Convert.ToInt32(dtgHoaDonGiaoHang.Rows[i].Cells["LoaiHang"].Value);
                    }
                    if (dtgHoaDonGiaoHang.Rows[i].Cells["SoLuong"].Value != null)
                    {
                        chitiet.SoLuong = Convert.ToDouble(dtgHoaDonGiaoHang.Rows[i].Cells["SoLuong"].Value);
                    }
                    if (dtgHoaDonGiaoHang.Rows[i].Cells["TrangThai"].Value != null)
                    {
                        chitiet.MaTrangThai = Convert.ToInt32(dtgHoaDonGiaoHang.Rows[i].Cells["TrangThai"].Value);
                    }

                    lstChiTiet.Add(chitiet);
                }
            }

            try
            {

                LapHoaDonGiaoHangBUS.Them(hoaDonDto, lstChiTiet);
                MessageBox.Show("Đã lưu lập hóa đơn giao hàng\n");
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }     
        }

        private void btnThoat_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btnChon_Click(object sender, EventArgs e)
        {
            string strDiaChi, strKhachHang;
            DataGridViewRow row = dtDSKhachHang.SelectedRows[0];
            strDiaChi = (string)row.Cells["DiaChi"].Value;
            strKhachHang = (string)row.Cells["NguoiLienHe"].Value;
            int iMaDD = (int)row.Cells["MaDiaDiem"].Value;

            if (dtgHoaDonGiaoHang.Rows.Count > 1)
            {
                row = dtgHoaDonGiaoHang.SelectedRows[0];
                row.Cells["KhachHang"].Value = strKhachHang;
                row.Cells["DiaChi"].Value = strDiaChi;
                row.Cells["MaDiaDiem"].Value = iMaDD;
            }
        } 
    }
}